A PCIe switch is a device that connects one or more upstream PCIe devices (e.g. hosts or PCIe root complexes) to multiple downstream PCIe devices (e.g. hard drives, SSDs, other peripherals, or PCIe endpoints). A conventional PCIe switch comprises a switch matrix that routes PCIe traffic between the PCIe devices. The conventional PCIe switch logically routes PCIe traffic via P2P (PCI to PCI) bridges associated with each port of the switch. In a multiple-host configuration, the switch matrix is programmed to logically partition the P2P bridges and each host connects to a separate partition of the PCIe switch. The external devices connect to the logical P2P bridges via physical ports.
For various purposes, a user may wish to move a downstream device between a partition of a first host and a partition of a second host. Due to the logical separation of the partitions in a conventional PCIe standard-compliant switch, the downstream device needs to be physically disconnected from a port belonging to the partition of the first host, and then physically connected to a different port belonging to the partition of the second host. This is known as a hot-plug event and necessitates manual and physical intervention by a user.
It is also known to use PCIe standard non-compliant methods to provide switch functions such as non-transparent bridging (NTB). NTB allows multiple hosts to concurrently access common downstream devices, typically at the cost of reduced functionality in some standard PCIe features. While not specifically aimed at the application of moving a downstream device from one partition to another, PCIe standard non-compliant switches may allow a downstream device to move from one partition to another, at the cost of reduced switch functionality for PCIe standard features.
It is desirable to obviate or mitigate some of the disadvantages associated with conventional PCIe switches, both standard-compliant and non-compliant, when moving downstream devices from one host or partition to another.